package com.zy.design.demo.creational;

/**
 * 工厂方法模式
 *特点：定义一个创建对象的接口，让子类决定实例化哪个类。
 * 具体应用：
 * 不同数据库厂商不同实现的 Driver
 */
interface Product {
    void create();
}

class ProductA implements Product {
    public void create() { System.out.println("产品A被创建"); }
}

class ProductB implements Product {
    public void create() { System.out.println("产品B被创建"); }
}

class ProductFactory {
    public static Product createProduct(String type) {
        if ("A".equals(type)) return new ProductA();
        if ("B".equals(type)) return new ProductB();
        throw new IllegalArgumentException("未知产品");
    }
}

class Main2 {
    public static void main(String[] args) {
        Product oldProduct = ProductFactory.createProduct("A");
        oldProduct.create();

        System.out.println("===============这次要B产品===============");
        Product newProduct = ProductFactory.createProduct("B");
        newProduct.create();

        System.out.println();
        System.out.println("两个产品一样？"+ oldProduct.equals(newProduct));
    }
}
